<?php

require_once __DIR__.'/../vendor/autoload.php';

(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
    dirname(__DIR__)
))->bootstrap();



/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
Here we will load the environment and create the application instance
that serves as the central piece of this framework. We'll use this
application as an "IoC" container and router for this framework.
在这里，我们将加载环境并创建应用程序实例
这是这个框架的中心部分。我们将使用这个
应用程序作为这个框架的“IoC”容器和路由器。
|
*/

$app = new Laravel\Lumen\Application(
    dirname(__DIR__)
);

 $app->withFacades();

 $app->withEloquent();

 //配置SwaggerLume
 $app->configure('swagger-lume');
/*
|--------------------------------------------------------------------------
| Register Container Bindings
|--------------------------------------------------------------------------
|
| Now we will register a few bindings in the service container. We will
| register the exception handler and the console kernel. You may add
| your own bindings here if you like or you can make another file.
|
*/

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

/*
|--------------------------------------------------------------------------
| Register Middleware
|--------------------------------------------------------------------------
|
| Next, we will register the middleware with the application. These can
| be global middleware that run before and after each request into a
| route or middleware that'll be assigned to some specific routes.
|
*/
//$app->middleware([
//    App\Http\Middleware\OldMiddleware::class
//]);


// $app->middleware([
//     App\Http\Middleware\ExampleMiddleware::class
// ]);


    //全局中间件  跨域
    $app->middleware([
        App\Http\Middleware\CorsMiddleware::class,
    ]);

    //路由中间件  在路由中用路由别名
    $app->routeMiddleware([
        'auth' => App\Http\Middleware\Authenticate::class,
        'admin_auth' => App\Http\Middleware\AdminAuth::class,
    ]);
/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
|
| Here we will register all of the application's service providers which
| are used to bind services into the container. Service providers are
| totally optional, so you are not required to uncomment this line.
|
*/

//$app->register(App\Providers\AppServiceProvider::class);
$app->register(App\Providers\AuthServiceProvider::class);  //jwt 的话取消这一行注释
// $app->register(App\Providers\EventServiceProvider::class);
//$app->register(Illuminate\Redis\RedisServiceProvider::class); //redis

$app->register(Tymon\JWTAuth\Providers\LumenServiceProvider::class); //jwt添加这一句
$app->register(SwaggerLume\ServiceProvider::class); //SwaggerLumen

/*
|--------------------------------------------------------------------------
| Load The Application Routes
|--------------------------------------------------------------------------
|
| Next we will include the routes file so that they can all be added to
| the application. This will provide all of the URLs the application
| can respond to, as well as the controllers that may handle them.
|
*/

$app->router->group([
    'namespace' => 'App\Http\Controllers',
], function ($router) {
    require __DIR__.'/../routes/web.php';
});

return $app;
